#pragma once


#include "Type.h"
#include "DecoratedType.h"

class CClass;

//type of  SubclassOf<T>  
class WHENGINE_API CSubclassOfType : public CType
{
public:
    CSubclassOfType();
    
    static CSubclassOfType* GetStaticType();

    static CString CreateTypeName(const CString& ElementType);
    static STypeID CreateID(const SDecoratedType & ElementType);

protected:
    static CString PlaceholderName;

};

class WHENGINE_API CSubclassOfGeneralized : public CType
{
public:
    CSubclassOfGeneralized(CType* InElementType);

    CClass* GetElementType();
};
